package Negocio;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import DTO.DTO_Deposito;
import DTO.DTO_Movimiento;
import DTO.DTO_StockInsumo;
import Entities.Entity_Deposito;
import Entities.Entity_Movimiento;
import Entities.Entity_StockInsumo;

public abstract class Deposito {
	
	protected String estado;
	protected int idDeposito;
	protected Date vencimiento;
	protected List<Movimiento> movimientos;
	protected List<StockInsumo> stockInsumos;
	
	public Deposito(String estado, int idDeposito, Date vencimiento,
			List<Movimiento> movimientos,
			List<Negocio.StockInsumo> stockInsumos) {
		super();
		this.estado = estado;
		this.idDeposito = idDeposito;
		this.vencimiento = vencimiento;
		this.movimientos = movimientos;
		this.stockInsumos = new ArrayList<StockInsumo>();
	}
	
	public Deposito(){
	}
	
	public Deposito (DTO_Deposito deposito){
		this.estado = deposito.getEstado();
		this.idDeposito = deposito.getIdDeposito();
		this.vencimiento = deposito.getVencimiento();
		for (DTO_Movimiento e: deposito.getMovimientos()){
			Movimiento mov_aux = new Movimiento(e);
			movimientos.add(mov_aux);
		}
		for(DTO_StockInsumo e: deposito.getStockInsumo()){
			StockInsumo stockI_aux = new StockInsumo(e);
			stockInsumos.add(stockI_aux);
		}
	}
	
	public Deposito (Entity_Deposito deposito){
		this.estado = deposito.getEstado();
		this.idDeposito = deposito.getIdDeposito();
		this.vencimiento = deposito.getVencimiento();
		for (Entity_Movimiento e: deposito.getMovimientos()){
			Movimiento mov_aux = new Movimiento(e);
			movimientos.add(mov_aux);
		}
		for(Entity_StockInsumo e: deposito.getStockInsumos()){
			StockInsumo stockI_aux = new StockInsumo(e);
			stockInsumos.add(stockI_aux);
		}
	}

	public String getEstado() {
		return estado;
	}
	public void setEstado(String estado) {
		this.estado = estado;
	}
	public int getIdDeposito() {
		return idDeposito;
	}
	public void setIdDeposito(int idDeposito) {
		this.idDeposito = idDeposito;
	}
	public Date getVencimiento() {
		return vencimiento;
	}
	public void setVencimiento(Date vencimiento) {
		this.vencimiento = vencimiento;
	}
	public List<Movimiento> getMovimientos() {
		return movimientos;
	}
	public void setMovimientos(List<Movimiento> movimientos) {
		this.movimientos = movimientos;
	}
	public List<StockInsumo> getStockInsumo() {
		return stockInsumos;
	}
	public void setStockInsumo(List<StockInsumo> stockInsumos) {
		this.stockInsumos = stockInsumos;
	}
	public abstract DTO_Deposito toDTO();
	public abstract Entity_Deposito toEntity();
	
}
